'''
    作者：刘妍
    版本：2.0
    日期：08/05/2020
    1.0功能：模拟投掷骰子
    2.0新增功能：模拟投掷2个骰子

    需求分析：骰子是一个六面体，每个面上有一个对应的数字
    投掷骰子，实际上就是一个随机事件，1-6这6个数字随机出现
    每一面出现的概率就是用每面出现的次数/投掷的总次数
    问题：总次数越大，是不是越趋于等概率？
    2个骰子，点数应该在2-12这个范围内
'''

# 导入random模块 模拟随机事件，产生随机数
import random

# 自定义函数，模拟投掷骰子
def roll_dice():
    roll = random.randint(1, 6)
    return roll

def main():
    # 总次数
    total_time = 10000
    # 定义列表，存放每个点数对应的投掷次数
    result_list = [0] * 11
    # 定义列表，存放点数2-12
    roll_list = list(range(2, 13))
    # 用zip函数打包生成字典，点数就是key，次数就是value
    roll_dict = dict(zip(roll_list, result_list))

    for i in range(total_time):
        # 调用roll_dice()函数实现骰子的投掷
        roll1 = roll_dice()
        roll2 = roll_dice()

        for j in range(2, 13):
            if (roll1 + roll2) == j:
                roll_dict[j] += 1

    # 希望能把每一面上的数字和该数字的投掷次数，概率都显示出来
    for i, result in roll_dict.items():
        print('点数{}的投掷次数是{}次，频率是{}'.format(i, result,
                                           result / total_time))


if __name__ == '__main__':
    main()